<?php
require_once $_SERVER[DOCUMENT_ROOT].'/clientes/src/lib/db/ConnectionDB.php';

class Comentario{
	
	//----------------------------------------------------------------------------
	//Constantes
	//----------------------------------------------------------------------------
	const PRODUCTO = "producto";
	const FOTO = "foto";
	const VIDEO = "video";
	const MUSICA = "musica";
	
	//----------------------------------------------------------------------------
	//Delimitador de la tabla
	//----------------------------------------------------------------------------
	
	/**
	 * El constrains de la clase
	 */
	private static $table_nombre = "comentario";
	private static $constrains = array(	array("id",				ConnectionDB::INT,				ConnectionDB::NOT_NULL, ConnectionDB::PRIMARY_KEY,	ConnectionDB::NO_DEFAULT_VALUE), 	//El id
										array("tipo",			ConnectionDB::STRING_NAME,		ConnectionDB::NOT_NULL,	ConnectionDB::NONE_KEY,		ConnectionDB::NO_DEFAULT_VALUE),	//El tipo de lo comentado
										array("id_usuario",		ConnectionDB::INT,				ConnectionDB::NOT_NULL,	ConnectionDB::INDEX_KEY,	ConnectionDB::NO_DEFAULT_VALUE),	//El id del usuario
										array("id_elemento",	ConnectionDB::INT,				ConnectionDB::NOT_NULL,	ConnectionDB::INDEX_KEY,	ConnectionDB::NO_DEFAULT_VALUE),	//El id del elemento comentado
										array("comentario",		ConnectionDB::STRING_COMMENT,	ConnectionDB::NNULL,	ConnectionDB::NONE_KEY,		ConnectionDB::DEFAULT_VALUE));		//El comentario

	//----------------------------------------------------------------------------
	//Atributos
	//----------------------------------------------------------------------------								
	
	/**
	 * Id del Comentario
	 */
	private $id;
	
	/**
	 * El contenido del comentario
	 */
	private $comentario;
	
	/**
	 * Tipo del elemento comentado
	 */
	private $tipo;
	
	/**
	 * Id de Usuario del comentario
	 */
	private $id_usuario;
	
	/**
	 * Id de lo comentado
	 */
	private $id_elemento;
	
	/**
	 * V�nculo con la Tabla en la Base de Datos
	 */	
	private $tabla;
	
	//----------------------------------------------------------------------------
	//M�todo constructor
	//----------------------------------------------------------------------------
	
	public function __construct($id = 0, $id_usuario = 0, $id_elemento = 0, $tipo = "", $comentario = ""){
		$this->id = $id;
		$this->id_usuario = $id_usuario;
		$this->id_elemento = $id_elemento;
		$this->tipo = $tipo;
		$this->comentario = $comentario;
		
		//Realiza lo debido a la base de datos
		$connection = new ConnectionDB($_SESSION['USER_NAME'],$_SESSION['USER_PASS']);
		$this->tabla = $connection->get_table(Comentario::$table_nombre, Comentario::$constrains);
	}
	
	//----------------------------------------------------------------------------
	//Getters y Setters B�sicos de la Clase
	//----------------------------------------------------------------------------

	/**
	 * Retorna el Id de la instancia
	 */
	public function get_id(){
		return $this->id;
	}
	
	/**
	 * Retorna el comentario
	 */
	public function get_comentario(){
		return $this->comentario;
	}
	
	/**
	 *Retorna el tipo del comentario
	 */
	public function get_tipo(){
		return $this->acerca;
	}
		
	/**
	 *Retorna el id del Usuario del comentario
	 */
	public function get_id_usuario(){
		return $this->id_usuario;
	}

	/**
	 *Retorna el id del elemento comentado
	 */
	public function get_id_elemento(){
		return $this->id_elemento;
	}
	
	/**
	 * Modifica el comentario
	 */
	public function set_comentario($comentario){
		$this->comentario = $comentario;
	}
			
	//----------------------------------------------------------------------------
	//Busqueda en la Base de Datos
	//----------------------------------------------------------------------------
	
	public static function search_by_id_usuario($id_usuario){
		$comentatio = new Comentario();
		
		$params = array(array("id_usuario", $id_usuario));
		$response_id = 	$comentario->tabla->get_value_by_field("id", $params);
		
		$answer = array();
		
		foreach($response_id as $i => $value){
			$user = new Comentario($response_id[$i]);
			$user->update_from_database_by_id();
			
			$answer[] = $user;
		}
		return $answer;
	}
	
	public static function search_by_tipo_id_elemento($tipo,$id_elemento){
		$comentario = new Comentario();
		
		$params = array(array("tipo", $tipo),
						array("id_elemento", $id_elemento));
		$response_id = 	$comentario->tabla->get_value_by_field("id", $params);
		
		$answer = array();
		
		foreach($response_id as $i => $value){
			$user = new Comentario($response_id[$i]);
			$user->update_from_database();
			
			$answer[] = $user;
		}
		return $answer;
	}
	
	//----------------------------------------------------------------------------
	//Actualizaci�n con la Base de Datos
	//----------------------------------------------------------------------------
	
	/**
	 * Actualiza la informaci�n en la Base de Datos
	 */
	public function update_database(){
		//Revisa si existe y lo agrega
		$params = array(array("id",		$this->id));
		$this->tabla->update($params);
		$this->id = $this->tabla->get_id();
		
		//Actualiza los valores
		if($this->id == 0){
			$parametros = array(	array("comentario",		$this->comentario),
									array("tipo",			$this->tipo),
									array("id_elemento",	$this->id_elemento),
									array("id_usuario",		$this->id_usuario));
			$this->tabla->update($parametros);
			$this->id = $this->tabla->get_id();
		}
	}
	
	/**
	 * Actualiza la informaci�n desde la Base de Datos seg�n el id
	 */
	public function update_from_database(){
		$params = array(array("id",$this->id));
		
		//Toma los valores
		$comentario =	$this->tabla->get_value_by_field("comentario",	$params);
		$tipo =			$this->tabla->get_value_by_field("tipo",		$params);
		$id_elemento =	$this->tabla->get_value_by_field("id_elemento",	$params);
		$id_usuario =	$this->tabla->get_value_by_field("id_usuario",	$params);
		
		$this->comentario = $comentario[0];
		$this->tipo = $tipo[0];
		$this->id_elemento = $id_elemento[0];
		$this->id_usuario = $id_usuario[0];		
	}
}
?>